Revert 17296:21d9575c669e.
authorKeir Fraser <keir.fraser@citrix.com>
Thu, 27 Mar 2008 09:12:09 +0000 (09:12 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Thu, 27 Mar 2008 09:12:09 +0000 (09:12 +0000)
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
tools/misc/xend
tools/xenstore/xenstored_core.c

index 15e9b8a53fed58fa8853e8f97d2e0bdff88c837f..7cb617630d044f25503a16f5904d764e17d74030 100644 (file)
@@ -95,17 +95,11 @@ def start_xenstored():
         f.close()
     except:
         pass
-    args = ['xenstored', "--pid-file", pidfname]
-    if os.getenv("XENSTORED_TRACE"):
-        args.extend(["-T", "/var/log/xen/xenstored-trace.log"])
-    pid = os.fork()
-    if pid == 0:
-        os.execvp('xenstored', args)
-    p, status = os.waitpid(pid, 0)
-    if os.WIFEXITED(status):
-        status = os.WEXITSTATUS(status)
-        if status:
-            raise RuntimeError("Failed to start xenstored: %d" % status)
+    XENSTORED_TRACE = os.getenv("XENSTORED_TRACE")
+    cmd = "xenstored --pid-file /var/run/xenstore.pid"
+    if XENSTORED_TRACE:
+        cmd += " -T /var/log/xen/xenstored-trace.log"
+    s,o = commands.getstatusoutput(cmd)
 
 def start_consoled():
     if os.fork() == 0:
index 37ceab8493410ea4dcfecc05f21c71d57dde915a..a643f2d9690c84a41605d84827ff174b1a5411dc 100644 (file)
@@ -1839,6 +1839,13 @@ int main(int argc, char *argv[])
                }
        }
 
+       if (dofork) {
+               openlog("xenstored", 0, LOG_DAEMON);
+               daemonize();
+       }
+       if (pidfile)
+               write_pidfile(pidfile);
+
        /* Talloc leak reports go to stderr, which is closed if we fork. */
        if (!dofork)
                talloc_enable_leak_report_full();
@@ -1892,21 +1899,16 @@ int main(int argc, char *argv[])
        /* Restore existing connections. */
        restore_existing_connections();
 
+       if (outputpid) {
+               printf("%ld\n", (long)getpid());
+               fflush(stdout);
+       }
+
        /* redirect to /dev/null now we're ready to accept connections */
        if (dofork) {
                int devnull = open("/dev/null", O_RDWR);
                if (devnull == -1)
                        barf_perror("Could not open /dev/null\n");
-
-               openlog("xenstored", 0, LOG_DAEMON);
-
-               daemonize();
-
-               if (outputpid) {
-                       printf("%ld\n", (long)getpid());
-                       fflush(stdout);
-               }
-
                dup2(devnull, STDIN_FILENO);
                dup2(devnull, STDOUT_FILENO);
                dup2(devnull, STDERR_FILENO);
@@ -1914,9 +1916,6 @@ int main(int argc, char *argv[])
                xprintf = trace;
        }
 
-       if (pidfile)
-               write_pidfile(pidfile);
-
        signal(SIGHUP, trigger_reopen_log);
 
        if (xce_handle != -1)